package chai.ning.object1;

/**
 * 1、重写(override)
 * 2、可以在方法上标注 "@Override" 来 "告知" 编译器 被标注的方法是重写父类的方法
 * 3、重写了 从Object继承的 、可见的toString方法
 */
public class Tiger {
	
	private String name ;
	private int age ;
	
	public Tiger(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}
	
	// 重写(override) : 子类中声明了与父类中 同名、同参、同返回 的方法，就说 子类中的同名方法覆盖或重写了父类中的同名方法
	// 同名 : 方法名称完全相同 
	// 同参 : 方法的参数个数、类型 、类型顺序 完全一致
	// 同返回 : 
	//      1、若父类同名方法返回基本数据类型或void则子类同名方法必须与父类返回类型完全相同；
	//      2、若父类同名方法返回引用类型，则子类同名方法所返回的类型必须与父类同名方法的返回类型一致
	// 访问修饰符: 子类同名方法的访问权限不能比父类同名方法的访问权限小
	@Override
	public String toString(){
		String s = "Tiger[name:" ;
		s = s + this.name + " , age:" ;
		s = s + this.age + "]";
		return s ;
	}
	
	public static void main(String[] args) {
		
		Tiger t = null ;
		
		System.out.println( t ); // t == null ? "null" : t.toString()
		// System.out.println( t.toString() ); // java.lang.NullPointerException
		
		t = new Tiger( "泰哥" , 10 );
		System.out.println( t );
		System.out.println( t.toString() );
		
	}

}
